package cn.labbook.bluetooth.custom;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

/**
 * 功能：封装的请求处理特殊字符
 *
 * @version V1.0
 * @ClassName: TsRequest
 */
public class FilterRequest extends HttpServletRequestWrapper {
    private Map params;

    public FilterRequest(HttpServletRequest request) {
        super(request);
        this.params = request.getParameterMap();
    }

    public Map getParameterMap() {
        return params;
    }

    public Enumeration getParameterNames() {
        Vector l = new Vector(params.keySet());
        return l.elements();
    }

    public String[] getParameterValues(String name) {
        Object v = params.get(name);
        if (v == null) {
            return super.getParameterValues(name);
        } else if (v instanceof String[]) {
            String[] value = (String[]) v;
            for (int i = 0; i < value.length; i++) {
                value[i] = value[i].replaceAll("<", "&lt;");
                value[i] = value[i].replaceAll(">", "&gt;");
            }
            return value;
        } else if (v instanceof String) {
            String value = (String) v;
            value = value.replaceAll("<", "&lt;");
            value = value.replaceAll(">", "&gt;");
            return new String[]{value};
        } else {
            return super.getParameterValues(name);
        }
    }

    public String getParameter(String name) {
        Object v = params.get(name);
        if (v == null) {
            return super.getParameter(name);
        } else if (v instanceof String[]) {
            String[] strArr = (String[]) v;
            if (strArr.length > 0) {
                String value = strArr[0];
                value = value.replaceAll("<", "&lt;");
                value = value.replaceAll("<", "&gt;");
                return value;
            } else {
                return super.getParameter(name);
            }
        } else if (v instanceof String) {
            String value = (String) v;
            value = value.replaceAll("<", "&lt;");
            value = value.replaceAll(">", "&gt;");
            return value;
        } else {
            return super.getParameter(name);
        }
    }
}
